package day04;

import java.util.Scanner;

/**
 * @author wangzhisen
 * @Desc TODO
 * @date 2025/4/12
 */

//需求2：九宫格

public class TestDoubleArray02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N= 0;
        while(true){
            System.out.println("请输入 N*N 宫格，要求大于1的奇数：");
            N = sc.nextInt();
            if(N<=2 || N%2==0){
                continue;
            }
            System.out.println("下面将画出 "+N+" * "+N+" 宫格");
            break;
        }
        //初始条件
        int[][] arr = new int[N][N];
        int x= 0;
        int y=N/2;

        for(int value=1; value<= N*N; value++){
            //落子
            arr[x][y] = value;

            //右上角
            x--;
            y++;

            //判断
            //情况1：行越界，列不越界 -->放置在当前列的最后一行
            if(x<0 && y<N){
                x=N-1;
            }

            //情况2：列越界，行不越界 -->放置在当前行的第一列
            if(y>=N && x>=0){
                y=0;
            }

            //情况3&4：行列都越界 | 右上角有值 -->放置在原来位置正下方
            if((x<0 && y>=N) || (arr[x][y]!=0)){
                x+=2;
                y--;
            }
        }
        //输出
        for(int i=0; i<arr.length; i++){
            for(int j=0; j<arr[i].length; j++){
                System.out.print((arr[i][j]< 10 ? "0"+arr[i][j]: arr[i][j])+"\t");
            }
            System.out.println();
        }
    }
}
